home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
EnigmA Amiga Run 1995 November
/
EnigmA AMIGA RUN 02 (1995)(G.R. Edizioni)(IT)[!][issue 1995-11][Skylink CD].iso
/
earcd
/
ead
/
ead12.dms
/
ead12.adf
/
Basic
/
Inglese
< prev
next >
Wrap
Text File
|
1989-02-04
|
15KB
|
432 lines
'inglese inizio lavori 20.9.88 fine lavori 6.12.88
CLEAR:CLS:DEFINT a-z
max=300:DIM voc$(1,max) '---vocaboli ital.(1,n) e ingl.(0,n)
DIM vcb$(1):vcb$(1)="Italiano":vcb$(0)="Inglese":lng=50
'------------------- disegno titolo
COLOR 2,1
LINE (2,1)-(616,27),3,bf:LINE (5,3)-(613,25),1,bf
LINE (10,24)-STEP(30,-20):LINE -STEP(10,0):LINE -STEP(0,20)
LINE -STEP(-10,0):LINE -STEP(0,-5):LINE -STEP(-10,0):LINE -STEP(-10,5)
LINE -STEP(-10,0):PAINT STEP(30,-10),3,2 '---A
LINE STEP(20,-10)-STEP(10,0):LINE -STEP(10,5):LINE -STEP(10,-5)
LINE -STEP(10,0):LINE -STEP(0,20):LINE -STEP(-10,0):LINE -STEP(0,-10)
LINE -STEP(-10,5):LINE -STEP(-10,-5):LINE -STEP(0,10):LINE -STEP(-10,0)
LINE -STEP(0,-20):PAINT STEP(20,10),3,2 '---M
LINE STEP(30,-10)-STEP(20,20),3,bf
LINE STEP(0,0)-STEP(-20,-20),,b '---I
LINE STEP(30,0)-STEP(30,0):LINE -STEP(0,5):LINE -STEP(-20,0)
LINE -STEP(0,10):LINE -STEP(10,0):LINE -STEP(0,-3):LINE -STEP(13,0)
LINE -STEP(0,3):LINE -STEP(-3,0):LINE -STEP(0,5):LINE -STEP(-30,0)
LINE -STEP(0,-20):PAINT STEP(3,3),3,2 '---G
LINE STEP(34,17)-STEP(30,-20):LINE -STEP(10,0):LINE -STEP(0,20)
LINE -STEP(-10,0):LINE -STEP(0,-5):LINE -STEP(-10,0):LINE -STEP(-10,5)
LINE -STEP(-10,0):PAINT STEP(30,-10),3,2 '---A
LOCATE 3,30:PRINT "Il tuo vocabolario parlante"
LINE (2,30)-(616,154),3,bf
LINE (2,158)-(616,185),3,bf
inizio: 'menu principale
GOSUB pulischermo
CALL topo(-7,8,"Inserimento nuovi termini",nv<max)
CALL topo(10,8,"Test",nv)
CALL topo(13,8,"Elenco vocaboli",nv)
CALL topo(16,8,"Vocabolario",nv)
CALL topo(7,40,"Caricamento vocaboli",1)
CALL topo(10,40,"Salvataggio vocaboli",nv)
CALL topo(13,40,"Fine",1)
LOCATE 16,40:PRINT "vocaboli in memoria n.";nv
COLOR 1,0
LOCATE 21,3:PRINT "scegli usando il mouse o digitando la prima lettera di un'opzione attiva"
LOCATE 23,50:PRINT CHR$(169);" Claudio Ruffini 12.88";
CALL topo(0,0,k$,0)
IF k$="V" THEN GOSUB vocabolario
IF k$="I" THEN GOSUB inserimento
IF k$="T" THEN GOSUB test
IF k$="E" THEN GOSUB elenco
IF k$="C" THEN GOSUB carica
IF k$="S" THEN GOSUB salva
IF k$="F" THEN
IF salva=0 OR nv=0 THEN
CLS:END
ELSE
GOSUB pulischermo
LOCATE 10,5:PRINT "attenzione!!!"
PRINT SPC(4);"i vocaboli in memoria non sono salvati"
PRINT:PRINT SPC(4);"vuoi salvarli?"
CALL topo(-9,50,"Si",1)
CALL topo(12,50,"No",1)
CALL topo(15,50,"Menu",1)
CALL topo(0,0,k$,0)
IF k$="S" THEN GOSUB salva:IF k$<>"M" THEN CLS:END
IF k$="N" THEN CLS:END
END IF
END IF
GOTO inizio 'fine menu
inserimento: 'inizio inserimento
GOSUB pulischermo:LINE (456,40)-(605,124),0,b
nv=nv+1:it$="":ing$="":salva=1
LOCATE 8,62:PRINT "Inserimento"
LOCATE 10,60:PRINT USING "vocabolo n. ###";nv
LOCATE 12,60:PRINT "memoria libera:"
PRINT SPC(62);FRE(0)
inserimento.1:
LOCATE 8,7:PRINT "digita il vocabolo italiano"
CALL insdati (10,4,lng,it$)
LOCATE 13,7:PRINT "digita la traduzione in inglese"
CALL insdati (15,4,lng,ing$)
IF it$="" OR ing$="" THEN GOTO inserimento.1
CALL parla (ing$,0)
voc$(1,nv)=it$:voc$(0,nv)=ing$
CALL topo(-22,4,"Correggi",1)
CALL topo(22,POS(0)+4,"Altro termine",nv<max)
CALL topo(22,POS(0)+4,"Ripeti",1)
CALL topo(22,POS(0)+4,"Spelling",1)
CALL topo(22,POS(0)+4,"Menu",1)
inserimento.2:
CALL topo(0,0,k$,0)
IF k$="C" THEN LINE (6,160)-(612,183),0,bf:GOTO inserimento.1
IF k$="R" THEN CALL parla (ing$,0):GOTO inserimento.2
IF k$="S" THEN CALL parla (ing$,1):GOTO inserimento.2
IF k$="A" THEN GOTO inserimento
RETURN 'fine inserimento
test: 'inizio test
tt=0:es=0:er=0:n=0:caso=0:dett=0
RANDOMIZE TIMER
GOSUB pulischermo
LOCATE 8,5:PRINT "Scegli il tipo di test"
CALL topo(-8,37,"Italiano-Inglese",1)
CALL topo(11,37,"English-Italian",1)
CALL topo(14,37,"Casuale",1)
CALL topo(17,37,"Dettato",1)
CALL topo(17,POS(0)+12,"Menu",1)
CALL topo(0,0,k$,0)
IF k$="M" THEN RETURN
IF k$="I" THEN quiz=1:solu=0
IF k$="E" THEN quiz=0:solu=1
IF k$="C" THEN caso=1:quiz=1:solu=0
IF k$="D" THEN dett=1:solu=0:quiz=1
test.1:
tt=tt+1:prove=0:trad$=""
n=INT(RND*nv+1)
FOR i=0 TO 1
prnt=INSTR(voc$(i,n),"(")-1
IF prnt>0 THEN
voc$(i,0)=LEFT$(voc$(i,n),prnt)
WHILE RIGHT$(voc$(i,0),1)=" "
voc$(i,0)=LEFT$(voc$(i,0),LEN(voc$(i,0))-1)
WEND
ELSE
voc$(i,0)=voc$(i,n)
END IF
NEXT i
GOSUB pulischermo:LINE (456,40)-(605,124),0,b
LOCATE 8,62:PRINT USING "Quiz n. ###";tt
IF dett=1 THEN
LOCATE 10,6:PRINT "scrivi la parola che ti detto"
WHILE trad$<>voc$(0,0) AND prove<3
CALL parla (voc$(0,n),0)
CALL insdati (14,4,lng,trad$)
prove=prove+1
LOCATE 16,4:PRINT "hai sbagliato riprova!"
WEND
ELSE
IF caso=1 THEN IF RND<.5 THEN SWAP quiz,solu
LOCATE 7,7:PRINT "vocabolo"
LOCATE 9,4:PRINT voc$(quiz,n)
LOCATE 12,7:PRINT "traduzione?"
WHILE trad$<>voc$(solu,0) AND prove<3
CALL insdati (14,4,lng,trad$)
prove=prove+1
LOCATE 16,4:PRINT "hai sbagliato riprova!"
WEND
END IF
IF trad$=voc$(solu,0) THEN '----- risposta esatta
es=es+1:LOCATE 16,4:PRINT "esatto! "
ELSE '-- risposta sbagliata
er=er+1:LOCATE 16,4:PRINT "sbagliato! "
END IF
PRINT SPC(3);"la traduzione di ";:COLOR 0,2:PRINT voc$(quiz,n):COLOR 1,2
PRINT SPC(17);"e' ";:COLOR 3,2:PRINT voc$(solu,n):COLOR 1,2
LOCATE 10,62:PRINT "risposte"
LOCATE 12,62:PRINT USING "esatte n. ###";es
LOCATE 13,62:PRINT USING "eratte n. ###";er
CALL parla (voc$(0,n),0)
CALL topo(-22,4,"Altro termine",1)
CALL topo(22,POS(0)+5,"Ripeti",1)
CALL topo(22,POS(0)+5,"Spelling",1)
CALL topo(22,POS(0)+5,"Menu",1)
test.2:
CALL topo(0,0,k$,0)
IF k$="A" THEN GOTO test.1
IF k$="R" THEN CALL parla (voc$(0,n),0):GOTO test.2
IF k$="S" THEN CALL parla (voc$(0,n),1):GOTO test.2
RETURN 'fine test
elenco: 'inizio elenco
GOSUB pulischermo
LOCATE 8,6:PRINT "scegli l'elenco"
CALL topo(8,30,"Italiano-Inglese",1)
CALL topo(12,30,"English-Italian",1)
CALL topo(12,POS(0)+10,"Menu",1)
CALL topo(0,0,k$,0)
IF k$="M" THEN RETURN
IF k$="I" THEN voc=1:tra=0
IF k$="E" THEN voc=0:tra=1
LOCATE 17,30:PRINT "attendi, sto riordinando i vocaboli"
flag=1:a=1 ' routine di sort
WHILE flag<>0
flag=0
FOR i=1 TO nv-a
IF voc$(voc,i)>voc$(voc,i+1) THEN
SWAP voc$(voc,i),voc$(voc,i+1)
SWAP voc$(tra,i),voc$(tra,i+1)
flag=1
END IF
NEXT i
a=a+1
WEND ' fine routine di sort
pg=1:i=0:j=0
elenco.1:
GOSUB pulischermo:LINE (456,40)-(605,124),0,b
LOCATE 8,64:PRINT "Elenco"
LOCATE 10,62:PRINT USING "pagina n. ###";pg
LOCATE 11,62:PRINT USING "totale pg ###";INT(nv/5)+.5
COLOR 0,2:LOCATE 13,64:PRINT vcb$(voc)
COLOR 1,2:LOCATE 15,64:PRINT vcb$(tra)
LOCATE 6,1
FOR j=1 TO 5
COLOR 0,2:PRINT SPC(2);voc$(voc,j+i)
COLOR 1,2:PRINT SPC(2);voc$(tra,j+i):PRINT
NEXT j
CALL topo(-22,5,"< Pag. indietro",pg>1)
CALL topo(22,POS(0)+4,"Pag. avanti >",i+5<nv)
CALL topo(22,POS(0)+4,"Leggi",1)
CALL topo(22,POS(0)+4,"Menu",1)
CALL topo(0,0,k$,0)
IF k$="P" THEN i=i+5:pg=pg+1
IF k$="<" THEN i=i-5:pg=pg-1
IF k$="M" THEN RETURN
IF k$="L" THEN
FOR j=1 TO 5
CALL parla (voc$(0,j+i),0)
NEXT j
END IF
GOTO elenco.1 'fine elenco
vocabolario: 'inizio vocabolario
GOSUB pulischermo:LINE (456,40)-(605,124),0,b
LOCATE 8,62:PRINT "Vocabolario"
msg$="":inz=1
LOCATE 7,7:PRINT "digita il vocabolo da tradurre"
CALL insdati (10,4,lng,msg$)
LOCATE 10,60:PRINT "Termine cercato:"
LOCATE 12,62:PRINT msg$
vocabolario.1:
flag=0
FOR i=inz TO nv
IF msg$=LEFT$(voc$(0,i),LEN(msg$)) THEN flag=i:i=nv:voc=0:tra=1
IF msg$=LEFT$(voc$(1,i),LEN(msg$)) THEN flag=i:i=nv:voc=1:tra=0
NEXT i
LOCATE 16,4:PRINT SPACE$(50):PRINT SPC(3);SPACE$(50)
IF flag=0 THEN
LOCATE 16,4:PRINT "termine non trovato"
ELSE
LOCATE 16,4
PRINT "la traduzione di ";:COLOR 0,2:PRINT voc$(voc,flag):COLOR 1,2
PRINT SPC(17);"e' ";:COLOR 3,2:PRINT voc$(tra,flag):COLOR 1,2
CALL parla (voc$(0,flag),0)
END IF
vocabolario.2:
CALL topo(-22,3,"Altro termine",nv)
CALL topo(22,POS(0)+3,"Correggi",flag*(k$<>"E"))
CALL topo(22,POS(0)+3,"Elimina",flag*(k$<>"E"))
CALL topo(22,POS(0)+3,"Pros.ric.",flag)
CALL topo(22,POS(0)+3,"Ripeti",flag*(k$<>"E"))
CALL topo(22,POS(0)+3,"Spelling",flag*(k$<>"E"))
CALL topo(22,POS(0)+3,"Menu",1)
CALL topo(0,0,k$,0)
IF k$="R" THEN CALL parla (voc$(0,flag),0)
IF k$="S" THEN CALL parla (voc$(0,flag),1)
IF k$="A" THEN GOTO vocabolario
IF k$="P" THEN inz=flag+1:GOTO vocabolario.1
IF k$="M" THEN RETURN
IF k$="C" THEN
it$=voc$(1,flag):ing$=voc$(0,flag)
GOSUB pulischermo:LINE (456,40)-(605,124),0,b
LOCATE 8,62:PRINT "Vocabolario"
LOCATE 10,60:PRINT "Termine cercato:"
LOCATE 12,62:PRINT msg$
LOCATE 8,7:PRINT "digita il vocabolo italiano"
CALL insdati (10,6,lng,it$)
LOCATE 12,7:PRINT "digita la traduzione in inglese"
CALL insdati (14,6,lng,ing$)
CALL parla (ing$,0)
voc$(1,flag)=it$:voc$(0,flag)=ing$
salva=1
END IF
IF k$="E" THEN
LOCATE 16,4:PRINT SPACE$(50):PRINT SPC(3);SPACE$(50)
LOCATE 16,4:PRINT "termine annullato"
nv=nv-1
FOR i=flag TO nv
voc$(1,i)=voc$(1,i+1):voc$(0,i)=voc$(0,i+1)
NEXT i
flag=flag-1:salva=1
END IF
GOTO vocabolario.2 'fine vocabolario
carica: 'inizio carica vocaboli
GOSUB pulischermo
flnm$=""
ON ERROR GOTO gesterr
carica.1:
LOCATE 10,6:PRINT "nome del file?":CALL insdati(12,6,40,flnm$)
LOCATE 15,6:PRINT "al nome del file viene aggiunto il suffisso .ingl"
CALL topo(-22,5,"Va bene",1)
CALL topo(22,POS(0)+4,"Correggi",1)
CALL topo(22,POS(0)+4,"Menu",1)
CALL topo(0,0,k$,0)
IF k$="C" THEN GOTO carica.1
flnm$=flnm$+".ingl"
IF k$="M" THEN RETURN
nv=0
OPEN flnm$ FOR INPUT AS #1
WHILE NOT EOF(1)
nv=nv+1
INPUT #1,voc$(1,nv),voc$(0,nv)
WEND
CLOSE #1
ON ERROR GOTO 0
RETURN 'fine carica vocaboli
gesterr: 'routine gestione errori
IF ERR<>53 THEN ON ERROR GOTO 0
LOCATE 15,6:PRINT "file non trovato";SPACE$(40)
flnm$=LEFT$(flnm$,LEN(flnm$)-5)
RESUME carica.1 'fine gestione errori
salva: 'inizio salva vocaboli
GOSUB pulischermo
IF flnm$>"" THEN flnm$=LEFT$(flnm$,LEN(flnm$)-5)
salva.1:
LOCATE 10,6:PRINT "nome del file?":CALL insdati(12,6,40,flnm$)
LOCATE 15,6:PRINT "al nome del file viene aggiunto il suffisso .ingl"
CALL topo(-22,5,"Va bene",1)
CALL topo(22,POS(0)+4,"Correggi",1)
CALL topo(22,POS(0)+4,"Menu",1)
CALL topo(0,0,k$,0)
IF k$="C" THEN GOTO salva.1
flnm$=flnm$+".ingl"
IF k$="M" THEN RETURN
OPEN flnm$ FOR OUTPUT AS #1
FOR i=1 TO nv
WRITE #1,voc$(1,i),voc$(0,i)
NEXT i
CLOSE #1
salva=0
RETURN 'fine salva vocaboli
pulischermo: 'routine pulisci schermo
LINE (6,32)-(612,152),2,bf
LINE (6,160)-(612,183),0,bf
COLOR 1,2
RETURN 'fine pulisci schermo
SUB parla (msg$,S) STATIC 'sottoprogramma parla
prnt=INSTR(msg$,"(")-1
IF prnt>0 THEN
dici$=LEFT$(msg$,prnt)
WHILE RIGHT$(dici$,1)=" "
dici$=LEFT$(dici$,LEN(dici$)-1)
WEND
ELSE
dici$=msg$
END IF
IF S=0 THEN
SAY TRANSLATE$(dici$+".")
ELSE
FOR i=1 TO LEN(dici$)
SAY TRANSLATE$(MID$(dici$,i,1)+".")
NEXT i
END IF
END SUB 'fine parla
SUB insdati (r,c,l,msg$) STATIC 'sottoprogramma inserimento dati
LINE ((c-1)*8-2,(r-1)*8-2)-((c-1)*8+l*8+2,r*8+2),,b
msg$=LEFT$(msg$+SPACE$(99),l):pc=1:k=0
si$="":ce$=LEFT$(msg$,1):de$=MID$(msg$,2)
LOCATE r,c:COLOR 2,3:PRINT ce$;:COLOR 1,0:PRINT de$
WHILE k<>13
k$=INKEY$
IF k$<>"" THEN
k=ASC(k$)
IF k=31 AND pc>1 THEN '------------ crsr left
pc=pc-1:si$=LEFT$(msg$,pc-1)
ce$=MID$(msg$,pc,1):de$=RIGHT$(msg$,l-pc)
ELSEIF k=30 AND pc<l THEN '------------ crsr right
pc=pc+1:si$=LEFT$(msg$,pc-1)
ce$=MID$(msg$,pc,1):de$=RIGHT$(msg$,l-pc)
ELSEIF k=8 AND pc>1 THEN '------------ backspace
pc=pc-1:si$=LEFT$(msg$,pc-1)
ce$=MID$(msg$,pc+1,1):de$=RIGHT$(msg$,l-pc-1)+" "
ELSEIF k=127 AND pc<l THEN '------------ delete
si$=LEFT$(msg$,pc-1):ce$=MID$(msg$,pc+1,1)
de$=RIGHT$(msg$,l-pc-1)+" "
ELSEIF k>31 AND k<127 AND RIGHT$(msg$,1)=" " THEN '-- carattere
IF pc<l THEN
si$=LEFT$(msg$,pc-1)+k$:ce$=MID$(msg$,pc,1)
de$=MID$(msg$,pc+1,l-pc-1):pc=pc+1
ELSE
si$=LEFT$(msg$,pc-1):ce$=k$:de$=""
END IF
ELSE
IF k<>13 THEN BEEP
END IF
LOCATE r,c:PRINT si$;:COLOR 2,3:PRINT ce$;:COLOR 1,0:PRINT de$
msg$=si$+ce$+de$
END IF
WEND
LOCATE r,c:PRINT msg$
COLOR 1,2
WHILE LEFT$(msg$,1)=" ":msg$=MID$(msg$,2):WEND
WHILE RIGHT$(msg$,1)=" ":msg$=LEFT$(msg$,LEN(msg$)-1):WEND
END SUB 'fine inserimento dati
SUB topo (r,c,msg$,atv) STATIC 'sottop. scelta con il mouse
IF r<0 THEN ns=0:r=ABS(r):scelta$=" "
IF r>0 AND c>0 THEN
x=(c-1)*8-2:x1=(c-1)*8+LEN(msg$)*8+2
y=(r-1)*8-2:y1=r*8+2
sx(ns)=x:sx1(ns)=x1:sy(ns)=y
sy1(ns)=y1:sa$(ns)=UCASE$(LEFT$(msg$,1))
IF atv=0 THEN COLOR 3,1 ELSE COLOR 0,1:scelta$=scelta$+sa$(ns)
LINE (x-1,y-1)-(x1+1,y1+1),1,bf:
LINE (x,y)-(x1,y1),,b
LOCATE r,c:PRINT msg$;
COLOR 1,2:ns=ns+1
ELSE
msg$=""
WHILE INSTR(scelta$,msg$)<2
IF MOUSE(0)<=0 THEN
msg$=UCASE$(INKEY$)
ELSE
a=MOUSE(0)
FOR i=0 TO ns
IF MOUSE(1)>sx(i) AND MOUSE(1)<sx1(i) THEN
IF MOUSE(2)>sy(i) AND MOUSE(2)<sy1(i) THEN
msg$=sa$(i):i=ns
END IF
END IF
NEXT i
END IF
WEND
END IF
END SUB 'fine scelta con il mouse